package com.imooc.coupon.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;
import java.util.stream.Stream;

/**
 * 分发类型枚举
 * Created By TINY
 * Create Time 2020/2/9 - 15:33
 **/
@AllArgsConstructor
@Getter
public enum DistributeTarget {

    // 需要用户自己手动领取
    SINGLE("单用户", 1),
    // 批量派发给用户
    MULTI("多用户", 2);

    /** 分发目标描述 */
    private String description;

    /** 分发目标编码 */
    private Integer code;

    public static DistributeTarget of(Integer code) {
        Objects.requireNonNull(code);

        return Stream.of(values()).filter(value -> value.code.equals(code))
                .findAny().orElseThrow(
                        () -> new IllegalArgumentException(
                                code + " 对应的分发目标类型不存在"));
    }
}
